﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class КадровоеПланированиеПереопределяемый
	{
		////////////////////////////////////////////////////////////////////////////////
		// Вспомогательные процедуры, функции
		////////////////////////////////////////////////////////////////////////////////
		// Процедуры, функции объекта

		public object ОбновитьРабочиеМестаРегл(/*Организация, ПодразделениеОрганизации, Период = Неопределено*/)
		{
			//Запрос = Новый Запрос;
			//Запрос.УстановитьПараметр("Организация",				Организация);
			//Запрос.УстановитьПараметр("ПодразделениеОрганизации",	ПодразделениеОрганизации);
			if(true/*Период <> Неопределено*/)
			{
				//Запрос.УстановитьПараметр("ДатаАктуальности",	КонецДня(Период));
				/*Запрос.Текст =
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	КадровоеПланирование.Подразделение КАК Подразделение,
		|	ВЫБОР
		|		КОГДА КадровоеПланирование.Подразделение = &ПодразделениеОрганизации
		|			ТОГДА ЛОЖЬ
		|		ИНАЧЕ ИСТИНА
		|	КОНЕЦ КАК ЕстьИерархия,
		|	КадровоеПланирование.Должность,
		|	КадровоеПланирование.Должность.Наименование КАК ДолжностьНаименование,
		|	КадровоеПланирование.КоличествоСтавок,
		|	КадровоеПланирование.ЗанятоСтавок,
		|	КадровоеПланирование.КоличествоСтавок - КадровоеПланирование.ЗанятоСтавок КАК Вакантно
		|ИЗ
		|	(ВЫБРАТЬ
		|		КадровоеПланирование.Подразделение КАК Подразделение,
		|		КадровоеПланирование.Должность КАК Должность,
		|		МАКСИМУМ(КадровоеПланирование.КоличествоСтавок) КАК КоличествоСтавок,
		|		МАКСИМУМ(КадровоеПланирование.ЗанятоСтавок) КАК ЗанятоСтавок
		|	ИЗ
		|		(ВЫБРАТЬ
		|			КадровыйПланСрезПоследних.ПодразделениеОрганизации КАК Подразделение,
		|			КадровыйПланСрезПоследних.Должность КАК Должность,
		|			СУММА(КадровыйПланСрезПоследних.Количество) КАК КоличествоСтавок,
		|			СУММА(0) КАК ЗанятоСтавок
		|		ИЗ
		|			РегистрСведений.КадровыйПлан.СрезПоследних(
		|					&ДатаАктуальности,
		|					Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)
		|						И ПодразделениеОрганизации.Владелец = &Организация";*/
				if(true/*ПодразделениеОрганизации <> Неопределено*/)
				{
					/*Запрос.Текст = Запрос.Текст + "
		|						И ПодразделениеОрганизации В ИЕРАРХИИ (&ПодразделениеОрганизации)";*/
				}
				/*Запрос.Текст = Запрос.Текст + "
		|																						) КАК КадровыйПланСрезПоследних
		|		
		|		СГРУППИРОВАТЬ ПО
		|			КадровыйПланСрезПоследних.ПодразделениеОрганизации,
		|			КадровыйПланСрезПоследних.Должность
		|		
		|		ОБЪЕДИНИТЬ ВСЕ
		|		
		|		ВЫБРАТЬ
		|			ЗанятыеШтатныеЕдиницыОрганизацийОстатки.ПодразделениеОрганизации,
		|			ЗанятыеШтатныеЕдиницыОрганизацийОстатки.Должность.Должность,
		|			СУММА(0),
		|			СУММА(ЗанятыеШтатныеЕдиницыОрганизацийОстатки.КоличествоСтавокОстаток)
		|		ИЗ
		|			РегистрНакопления.ЗанятыеШтатныеЕдиницыОрганизаций.Остатки(
		|					&ДатаАктуальности,
		|					ПодразделениеОрганизации.Владелец = &Организация";*/
				if(true/*ПодразделениеОрганизации <> Неопределено*/)
				{
					/*Запрос.Текст = Запрос.Текст + "
		|						И ПодразделениеОрганизации В ИЕРАРХИИ (&ПодразделениеОрганизации)";*/
				}
				/*Запрос.Текст = Запрос.Текст + "
		|						И Должность.Должность <> ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка)) КАК ЗанятыеШтатныеЕдиницыОрганизацийОстатки
		|		
		|		СГРУППИРОВАТЬ ПО
		|			ЗанятыеШтатныеЕдиницыОрганизацийОстатки.ПодразделениеОрганизации,
		|			ЗанятыеШтатныеЕдиницыОрганизацийОстатки.Должность.Должность
		|		
		|		ОБЪЕДИНИТЬ ВСЕ
		|		
		|		ВЫБРАТЬ
		|			Вакансии.Подразделение,
		|			Вакансии.Должность,
		|			СУММА(1),
		|			СУММА(0)
		|		ИЗ
		|			Справочник.Вакансии КАК Вакансии
		|		ГДЕ
		|			(НЕ Вакансии.Закрыта)
		|			И Вакансии.Подразделение ССЫЛКА Справочник.ПодразделенияОрганизаций";*/
				if(true/*ПодразделениеОрганизации <> Неопределено*/)
				{
					/*Запрос.Текст = Запрос.Текст + "
		|			И Вакансии.Подразделение В ИЕРАРХИИ(&ПодразделениеОрганизации)";*/
				}
				/*Запрос.Текст = Запрос.Текст + "
		|			И Вакансии.Подразделение.Владелец = &Организация
		|		
		|		СГРУППИРОВАТЬ ПО
		|			Вакансии.Подразделение,
		|			Вакансии.Должность
		|		
		|		ОБЪЕДИНИТЬ ВСЕ
		|		
		|		ВЫБРАТЬ
		|			ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации,
		|			ШтатноеРасписаниеОрганизацийСрезПоследних.Должность.Должность,
		|			СУММА(ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок),
		|			СУММА(0)
		|		ИЗ
		|			РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних(
		|					&ДатаАктуальности,
		|					ПодразделениеОрганизации.Владелец = &Организация";*/
				if(true/*ПодразделениеОрганизации <> Неопределено*/)
				{
					/*Запрос.Текст = Запрос.Текст + "
		|						И ПодразделениеОрганизации В ИЕРАРХИИ (&ПодразделениеОрганизации)";*/
				}
				/*Запрос.Текст = Запрос.Текст + "
		|						И Должность.Должность <> ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка)
		|						И (НЕ (ПодразделениеОрганизации, Должность.Должность) В
		|							(ВЫБРАТЬ РАЗЛИЧНЫЕ
		|								КадровыйПлан.ПодразделениеОрганизации,
		|								КадровыйПлан.Должность
		|							ИЗ
		|								РегистрСведений.КадровыйПлан.СрезПоследних(&ДатаАктуальности, Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)
		|									И ПодразделениеОрганизации.Владелец = &Организация";*/
				if(true/*ПодразделениеОрганизации <> Неопределено*/)
				{
					/*Запрос.Текст = Запрос.Текст + "
		|									И ПодразделениеОрганизации В ИЕРАРХИИ (&ПодразделениеОрганизации)";*/
				}
				/*Запрос.Текст = Запрос.Текст + "
		|									) КАК КадровыйПлан
		|							ГДЕ
		|								КадровыйПлан.Количество <> 0))) КАК ШтатноеРасписаниеОрганизацийСрезПоследних
		|		
		|		СГРУППИРОВАТЬ ПО
		|			ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации,
		|			ШтатноеРасписаниеОрганизацийСрезПоследних.Должность.Должность) КАК КадровоеПланирование
		|	
		|	СГРУППИРОВАТЬ ПО
		|		КадровоеПланирование.Подразделение,
		|		КадровоеПланирование.Должность) КАК КадровоеПланирование
		|ГДЕ
		|	НЕ (КадровоеПланирование.КоличествоСтавок = 0
		|	И КадровоеПланирование.ЗанятоСтавок = 0)
		|
		|УПОРЯДОЧИТЬ ПО
		|	ДолжностьНаименование,
		|	Подразделение ИЕРАРХИЯ";*/
			}
			return null;
		}
		////////////////////////////////////////////////////////////////////////////////
		// Процедуры, функции для работы формы

		public object ОтчетПоТекучести(/**/)
		{
			//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
			if(true/*РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоСтруктуреЮридическихЛиц*/)
			{
			}
			return null;
		}

		public void ЗаполнитьЗначенияДополнительно(/*Форма, ЭтаФорма*/)
		{
			//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
			if(true/*РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоСтруктуреЮридическихЛиц*/)
			{
				//Форма.Организация	= ЭтаФорма.Организация;
			}
		}

		public void РабочиеМестаНоваяВакансияДополнительно(/*ДанныеСтроки, ЭтаФорма*/)
		{
			//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
			//ДанныеСтроки = ЭтаФорма.ЭлементыФормы.Подразделения.ТекущиеДанные;
		}

		public object ОбновитьДополнительно(/*ЭтотОбъект, ЭтаФорма*/)
		{
			//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
			if(true/*РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоЦентрамОтветственности*/)
			{
				//КадровоеПланированиеДополнительный.ОбновитьДанныеПодразделения(ЭтотОбъект, ЭтаФорма);
			}
			return null;
		}

		public void ОпределитьДоступ(/*ЭтаФорма*/)
		{
			//ЭтаФорма.ЕстьДоступУпр	= ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ЗанятыеРабочиеМеста) И ПравоДоступа("Добавление", Метаданные.Документы.ИзменениеКадровогоПлана);
			//ЭтаФорма.ЕстьДоступРегл	= ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ЗанятыеШтатныеЕдиницыОрганизаций) И ПравоДоступа("Добавление", Метаданные.Документы.ИзменениеКадровогоПлана);
		}

		public void ПередОткрытиемДополнительно(/*ЭтаФорма, ДополнительныеДействия*/)
		{
			//КадровоеПланированиеДополнительный.ЗаполнитьДополнительноеМеню(ЭтаФорма, ДополнительныеДействия);
			//КадровоеПланированиеДополнительный.ПриИзмененииРежимаНабораПерсонала(ЭтаФорма);
			//ЭтаФорма.Подразделения.Порядок.Установить("Порядок");
		}

		public void ДополнитьТекстМакетаВстроеннойСправки(/*ТекстМакетаВстроеннойСправки*/)
		{
			//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
			//РежимНабораПерсонала_ПоСтруктуреЮридическихЛиц	= ?(РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоСтруктуреЮридическихЛиц, "inline", "none");
			/*ТекстМакетаВстроеннойСправки = ТекстМакетаВстроеннойСправки + "
	|		<DIV><P id=РежимНабораПерсонала_ПоСтруктуреЮридическихЛиц style=""DISPLAY:"+РежимНабораПерсонала_ПоСтруктуреЮридическихЛиц+""">Информация о количестве ставок берется из штатного расписания.</P></DIV>";*/
		}

		public object ОтсутствиеДоступаКРежимуПланирования(/*ЭтаФорма*/)
		{
			//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
			if(true/*РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоСтруктуреЮридическихЛиц*/)
			{
				if(true/*Не ЭтаФорма.ЕстьДоступРегл*/)
				{
				}
			}
			return null;
		}

		public void РабочиеМестаВыборДополнительно(/*ЭтаФорма, Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка*/)
		{
			//СтандартнаяОбработка = Ложь;
			//ДанныеСтроки = ЭтаФорма.ЭлементыФормы.РабочиеМеста.ТекущиеДанные;
			if(true/*ДанныеСтроки = Неопределено*/)
			{
			}
			//ФормаЗаписи = РегистрыСведений.КадровыйПлан.ПолучитьФорму("ФормаЗаписи");
			//ФормаЗаписи.Должность		= ВыбраннаяСтрока.Должность;
			//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
			if(true/*РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоЦентрамОтветственности*/)
			{
				//ФормаЗаписи.Подразделение				= ДанныеСтроки.Подразделение;
			}
			//ФормаЗаписи.Открыть();
		}

		public object ВыполняетсяДополнительноеУсловие(/*Команда, ЭтаФорма*/)
		{
			if(true/*Команда = "SwitchOrganizationalStructure"*/)
			{
				//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
				if(true/*РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоСтруктуреЮридическихЛиц*/)
				{
					//РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоЦентрамОтветственности;
				}
				//Константы.РежимНабораПерсонала.Установить(РежимНабораПерсонала);
				//КадровоеПланированиеДополнительный.ПриИзмененииРежимаНабораПерсонала(ЭтаФорма);
			}
			return null;
		}

		public void ОбновитьСправкуФормы(/*ЭтаФорма, ПолеДанных = Неопределено*/)
		{
			//РежимНабораПерсонала = ПроцедурыУправленияПерсоналомДополнительный.ПолучитьРежимНабораПерсонала();
			//ДокHTML = ЭтаФорма.ЭлементыФормы.ВстроеннаяСправка.Документ;
			if(true/*ПолеДанных = Неопределено*/)
			{
				//РаботаСДиалогами.УстановитьВидимостьТекста(ДокHTML, "РежимНабораПерсонала_ПоСтруктуреЮридическихЛиц", РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия.ПоСтруктуреЮридическихЛиц);
			}
		}
		// ПоказатьСправкуФормы()

		public void ВыполнитьДополнительныеДействия(/*ЭтаФорма, Кнопка*/)
		{
			if(true/*Не (ЭтаФорма.ЕстьДоступУпр И ЭтаФорма.ЕстьДоступРегл)*/)
			{
				//Предупреждение("У вас нет прав для изменения режима кадрового планирования");
			}
			//РежимНабораПерсонала = Перечисления.ВидыОрганизационнойСтруктурыПредприятия[Кнопка.Имя];
			//Константы.РежимНабораПерсонала.Установить(РежимНабораПерсонала);
			//КадровоеПланированиеДополнительный.ПриИзмененииРежимаНабораПерсонала(ЭтаФорма);
		}
	}
}
